/**
 * Werwolftool-Spielleiterfunktionen
 * @author JANNiS <jannis@huffle-home.de>
 */

/**
 * Rolle eines Spielers
 */
var Rolle = new Class({
	/**
	 * Der Name der Rolle
	 */
	name: null,
	/**
	 * Beschreibung zur Rolle
	 */
	beschreibung: null,
	/**
	 * Array mit allen Spielernamen, die diese Rolle haben
	 */
	spieler: [],
	
	/**
	 * Konstruktor
	 * @argument name Name der Rolle
	 */
	initialize: function(name) {
		this.name = name;
	},
	
	/**
	 * Setzt eine Rolleneigenschaft
	 * @argument eigenschaft Name der Eigenschaft
	 * @argument wert Neuer Wert für die Eigenschaft
	 * @return this
	 */
	set: function(eigenschaft, wert) {
		// Eigenschaft ändern
		this[eigenschaft] = wert;
		
		// return
		return this;
	},
	
	/**
	 * Gibt eine Rolleneigenschaft zurück
	 * @argument eigenschaft Eigenschaft, die zurückgegeben werden soll
	 * @return Wert der Eigenschaft
	 */
	get: function(eigenschaft) {
		// Eigenschaftswert merken
		var wert = this[eigenschaft];
		
		// falls Eigenschaft ein Array ist ...
		if($type(wert) == "array") {
			// ... Kopie anlegen
			wert = $A(wert);
		}
		
		// Wert zurückgeben
		return wert;
	},
	
	/**
	 * Entfernt den Spieler aus der Spielerliste
	 * @argument spieler Zu entfernender Spieler(/name)
	 * @return this
	 */
	removeSpieler: function(spieler) {
		// falls Spieler ein Objekt ist ...
		if($type(spieler) == "object") {
			// Nur Namen merken
			spieler = spieler.get("name");
		}
		
		// Spieler aus Spielerliste entfernen
		this.spieler.erase(spieler);
		
		// Rolle löschen, falls sie niemand mehr hat
		spiel.rolleEntfernen(this);
		
		// return
		return this;
	},
	
	/**
	 * Fügt einen Spieler zur Spielerliste hinzu
	 * @argument spieler Hinzuzufügender Spieler(/name)
	 * @return this
	 */
	addSpieler: function(spieler) {
		// falls Spieler ein Objekt ist ...
		if($type(spieler) == "object") {
			// Nur Namen merken
			spieler = spieler.get("name");
		}
		
		// Spieler zur Spielerliste hinzufügen
		this.spieler.include(spieler);
		
		// return
		return this;
	}
});